home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
SNNSV32.ZIP
/
SNNSv3.2
/
kernel
/
sources
/
kr_typ.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-04-25
|
9KB
|
332 lines
/*****************************************************************************
FILE : kr_typ.h
SHORTNAME :
SNNS VERSION : 3.2
PURPOSE : SNNS-Kernel: Datatypes and Constants for Internal Useage
NOTES : 12.02.90
AUTHOR : Niels Mache
DATE :
CHANGED BY : Sven Doering, Michael Vogt
IDENTIFICATION : @(#)kr_typ.h 1.16 3/15/94
SCCS VERSION : 1.16
LAST CHANGE : 3/15/94
Copyright (c) 1990-1994 SNNS Group, IPVR, Univ. Stuttgart, FRG
******************************************************************************/
#include "glob_typ.h" /* Global datatypes and constants */
#include "ext_typ.h" /* Types and constants for extern kernel */
#ifndef KR_TYPES
#define KR_TYPES
/*#################################################
GROUP: Type Definitions
#################################################*/
#ifdef __BORLANDC__
#ifndef strdup
#define strdup bsd_strdup
#endif
/*
#define int long
*/
#endif
/* type definition of input/output pattern array
*/
typedef FlintType *Patterns;
/* type definition of integer array for shuffeling input/output patterns
*/
typedef int *PatternNumbers;
struct Unit ; /* Dummy declaration */
struct Site ; /* Dummy declaration */
typedef FlintType (* SiteFuncPtr) (struct Site *);
typedef FlintType (* ActFuncPtr) (struct Unit *);
typedef FlintType (* ActDerivFuncPtr) (struct Unit *);
/* argument type of OutFuncPtr changed from FlintType to double
due to GNU C
*/
typedef FlintType (* OutFuncPtr) (double);
typedef krui_err (* LearnFuncPtr) (int, int, float *, int, float * *, int *);
typedef krui_err (* UpdateFuncPtr) (float *, int);
typedef krui_err (* InitFuncPtr) (float *, int);
/*#################################################
GROUP: Type Definition of Name Table
#################################################*/
/* Name table structure
*/
struct NameTable {
union {
char *symbol; /* stores symbol name */
struct NameTable *next; /* stores name-table block ptr
and free name-table entry */
} Entry;
unsigned short sym_type, /* stores type of entry */
ref_count; /* stores no. of references to
this symbol (If more then MAXSHORT
references are detected the symbol will
released only by krm_releaseMem()
*/
};
/*#################################################
GROUP: Type Definition of Site-Table
#################################################*/
/* Site table structure
*/
struct SiteTable {
union {
struct NameTable *site_name; /* stores the site symbol (it's not a direkt
pointer to the symbol, but a pointer to the
name-table entry */
struct SiteTable *next; /* stores next site-table block ptr
and free site-table entries */
} Entry;
SiteFuncPtr site_func; /* stores site function */
};
/*#################################################
GROUP: Type definition of unit functionality table
#################################################*/
/* Unit prototype structure
*/
struct FtypeUnitStruct {
struct NameTable *Ftype_symbol;
OutFuncPtr out_func;
ActFuncPtr act_func;
ActDerivFuncPtr act_deriv_func;
struct Site *sites;
struct FtypeUnitStruct *next;
struct FtypeUnitStruct *prev;
};
/*#################################################
GROUP: Unit/Site/Link type definitions
#################################################*/
/*m.r.*/
/* BPTT: maximum number additional unit activity copies back in time,
(= number of non-input layers for backpropagation)
*/
#define MAX_BPTT_BACKSTEP 10
/* Link structure
*/
struct Link {
struct Unit *to; /* points to the source unit */
FlintType weight; /* link weight */
FlintType value_a, /* general purpose elements for the */
value_b, /* learning functions */
value_c;
struct Link *next; /* next link */
};
/* Site structure
*/
struct Site {
struct Link *links; /* input links of the site */
struct SiteTable *site_table; /* : site name and function */
struct Site *next; /* next site */
};
/* Type of unit flags
*/
typedef unsigned short FlagWord;
/* Unit structure
*/
struct Unit {
/* output MUST be the first element in unit structure !
(access is faster if functions can assume that <output>
is the FIRST element of the unit structure)
*/
union {
FlintType output; /* unit's output */
int nextFreeUnit; /* used by the unit memory manager */
} Out;
FlagWord flags; /* unit flags */
int lun; /* logical unit number */
int lln; /* logical layer number */
struct FtypeUnitStruct *Ftype_entry; /* pointer to the unit's prototype */
union {
FlintType flint_no; /* used by backpropagation: holds errors from successors */
int int_no; /* used by layer sorting: holds the layer no of the unit */
char *ptr; /* used for garbage collection */
} Aux; /* general purpose use */
struct
{
struct Unit **my_topo_ptr; /* pointer to coresponding entry in */
/* topo_ptr_array */
int target_offset; /* offset to prototype target unit via */
/* topo_ptr_array */
int source_offset; /* offset to logioal source unit via */
/* prototype target and topo_ptr_array */
int td_connect_typ; /* recept. field or not */
} TD; /* TimeDelay net datas */
FlintType act, /* current activation */
i_act, /* initial activation */
bias; /* bias */
FlintType value_a, /* general purpose elements for the */
value_b, /* learning functions */
value_c;
/*m.r.*/
FlintType olddelta, /* BPTT-section: delta value at time t */
newdelta; /* delta value at time t-1
(deltas are propagated back in time )*/
FlintType actbuf[MAX_BPTT_BACKSTEP]; /*outacts at previous time steps*/
/*m.r.*/
OutFuncPtr out_func; /* output function */
ActFuncPtr act_func; /* activation function */
ActDerivFuncPtr act_deriv_func; /* derivation act. function */
char *unit_name; /* unit name */
short subnet_no; /* subnet no. */
unsigned short layer_no; /* display layer (bitfield) */
struct PosType unit_pos; /* unit position */
#ifdef KERNEL3D
/* unit's center position */
struct PositionVector unit_center_pos[ NO_OF_UNIT_CENTER_POS ];
#endif
struct Site *sites; /* points to unit's input links or sites */
};
/*#################################################
GROUP: Var types used by kernel functions
#################################################*/
/* stucture for storing the error codes and messages of the topologic sorting
and network checking functions
*/
struct TopologicMessages {
int error_code, /* stores the internal error code */
no_of_cycles, /* no. of detected cycles in the network */
no_of_dead_units, /* no. of dead units in the network */
no_of_layers, /* no. of layers of the network */
dest_error_unit, /* first error unit (destination unit) */
src_error_unit; /* first error unit (source unit) */
char name[20]; /* a chararcter string that can be passed */
};
/*#################################################
GROUP: Link/Site/Unit and Unit Ptrs Array Type Definitions
#################################################*/
/* definition of link array
*/
typedef struct Link *LinkArray;
/* definition of site array
*/
typedef struct Site *SiteArray;
/* definition of pointer array for topological sorting
*/
typedef struct Unit * *TopoPtrArray;
/* definition of unit array
*/
typedef struct Unit *UnitArray;
/* Definition of Name Table Array
*/
typedef struct NameTable *NTableArray;
/* Definition of Site Name Table Array
*/
typedef struct SiteTable *STableArray;
#ifdef KERNEL3D
struct TransTable {
short z,
x,
y;
};
#endif
/*#################################################
GROUP: Structure Size Constants
#################################################*/
#define UNIT_SIZE sizeof (struct Unit)
#define SITE_SIZE sizeof (struct Site)
#define LINK_SIZE sizeof (struct Link)
#define PATTERN_SIZE sizeof (FlintType)
#define PATTERN_NO_SIZE sizeof (int)
#define TOPO_PTR_SIZE sizeof (struct Unit *)
#define NTABLE_SIZE sizeof (struct NameTable)
#define STABLE_SIZE sizeof (struct SiteTable)
#define FTYPE_UNIT_SIZE sizeof (struct FtypeUnitStruct)
#endif